<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
</head>

<body>
    <script>
        var name = "小明";
        let obj = {
            name: "李白",
            say(val) {
                alert(this.name + val);
            },
        };
        let obj2 = {
            name: "王昭君",
        };
        // call apply 是函数的方法 可以改变函数的this执行并且会立刻执行这个函数
        // 他们的区别是在传参的时候有区别 apply必须接受一个数组作为参数
        // obj.say.call(obj2, "帅哥");
        // obj.say.apply(window, ["美女"]);

        // 还有一个bind可以改变this bind不会让函数立刻执行 只会改变this
        // obj.say("aaaa")
        obj.say.bind(obj2)("aaaa");
        //后面加的小括号是让函数执行的
    </script>
</body>

</html>